package com.ruoyi.campus.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 监控设备对象 monitor_device
 * 
 * @author campus-alarm
 * @date 2024-01-01
 */
@TableName("monitor_device")
public class MonitorDevice extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 设备ID */
    @TableId(type = IdType.AUTO)
    private Long deviceId;

    /** 设备编码 */
    @Excel(name = "设备编码")
    private String deviceCode;

    /** 设备名称 */
    @Excel(name = "设备名称")
    private String deviceName;

    /** 设备类型：1监控摄像头 2报警按钮 3音频监控 4紧急电话 5其他 */
    @Excel(name = "设备类型")
    private Integer deviceType;

    /** 设备型号 */
    @Excel(name = "设备型号")
    private String deviceModel;

    /** 设备品牌 */
    @Excel(name = "设备品牌")
    private String deviceBrand;

    /** 所属学校 */
    @Excel(name = "所属学校")
    private Long schoolId;

    /** 设备位置描述 */
    @Excel(name = "位置描述")
    private String locationDesc;

    /** 所在建筑 */
    @Excel(name = "所在建筑")
    private String locationBuilding;

    /** 所在楼层 */
    @Excel(name = "所在楼层")
    private Integer locationFloor;

    /** 所在房间 */
    @Excel(name = "所在房间")
    private String locationRoom;

    /** 纬度 */
    private BigDecimal latitude;

    /** 经度 */
    private BigDecimal longitude;

    /** IP地址 */
    @Excel(name = "IP地址")
    private String ipAddress;

    /** 端口号 */
    @Excel(name = "端口号")
    private Integer port;

    /** MAC地址 */
    @Excel(name = "MAC地址")
    private String macAddress;

    /** 设备状态：0离线 1在线 2故障 3维护中 */
    @Excel(name = "设备状态")
    private Integer status;

    /** 在线状态：0离线 1在线 */
    @Excel(name = "在线状态")
    private Integer onlineStatus;

    /** 最后心跳时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "最后心跳时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date lastHeartbeat;

    /** 心跳间隔（秒） */
    @Excel(name = "心跳间隔")
    private Integer heartbeatInterval;

    /** 安装日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "安装日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date installDate;

    /** 最后维护日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "最后维护日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date maintenanceDate;

    /** 下次维护日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "下次维护日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date nextMaintenanceDate;

    /** 保修期截止日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "保修期截止日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date warrantyExpireDate;

    /** 供应商名称 */
    @Excel(name = "供应商名称")
    private String vendorName;

    /** 供应商联系方式 */
    @Excel(name = "供应商联系方式")
    private String vendorContact;

    /** 设备配置参数(JSON) */
    private String configParams;

    public Long getDeviceId() {
        return deviceId;
    }

    public void setDeviceId(Long deviceId) {
        this.deviceId = deviceId;
    }

    public String getDeviceCode() {
        return deviceCode;
    }

    public void setDeviceCode(String deviceCode) {
        this.deviceCode = deviceCode;
    }

    public String getDeviceName() {
        return deviceName;
    }

    public void setDeviceName(String deviceName) {
        this.deviceName = deviceName;
    }

    public Integer getDeviceType() {
        return deviceType;
    }

    public void setDeviceType(Integer deviceType) {
        this.deviceType = deviceType;
    }

    public String getDeviceModel() {
        return deviceModel;
    }

    public void setDeviceModel(String deviceModel) {
        this.deviceModel = deviceModel;
    }

    public String getDeviceBrand() {
        return deviceBrand;
    }

    public void setDeviceBrand(String deviceBrand) {
        this.deviceBrand = deviceBrand;
    }

    public Long getSchoolId() {
        return schoolId;
    }

    public void setSchoolId(Long schoolId) {
        this.schoolId = schoolId;
    }

    public String getLocationDesc() {
        return locationDesc;
    }

    public void setLocationDesc(String locationDesc) {
        this.locationDesc = locationDesc;
    }

    public String getLocationBuilding() {
        return locationBuilding;
    }

    public void setLocationBuilding(String locationBuilding) {
        this.locationBuilding = locationBuilding;
    }

    public Integer getLocationFloor() {
        return locationFloor;
    }

    public void setLocationFloor(Integer locationFloor) {
        this.locationFloor = locationFloor;
    }

    public String getLocationRoom() {
        return locationRoom;
    }

    public void setLocationRoom(String locationRoom) {
        this.locationRoom = locationRoom;
    }

    public BigDecimal getLatitude() {
        return latitude;
    }

    public void setLatitude(BigDecimal latitude) {
        this.latitude = latitude;
    }

    public BigDecimal getLongitude() {
        return longitude;
    }

    public void setLongitude(BigDecimal longitude) {
        this.longitude = longitude;
    }

    public String getIpAddress() {
        return ipAddress;
    }

    public void setIpAddress(String ipAddress) {
        this.ipAddress = ipAddress;
    }

    public Integer getPort() {
        return port;
    }

    public void setPort(Integer port) {
        this.port = port;
    }

    public String getMacAddress() {
        return macAddress;
    }

    public void setMacAddress(String macAddress) {
        this.macAddress = macAddress;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public Integer getOnlineStatus() {
        return onlineStatus;
    }

    public void setOnlineStatus(Integer onlineStatus) {
        this.onlineStatus = onlineStatus;
    }

    public Date getLastHeartbeat() {
        return lastHeartbeat;
    }

    public void setLastHeartbeat(Date lastHeartbeat) {
        this.lastHeartbeat = lastHeartbeat;
    }

    public Integer getHeartbeatInterval() {
        return heartbeatInterval;
    }

    public void setHeartbeatInterval(Integer heartbeatInterval) {
        this.heartbeatInterval = heartbeatInterval;
    }

    public Date getInstallDate() {
        return installDate;
    }

    public void setInstallDate(Date installDate) {
        this.installDate = installDate;
    }

    public Date getMaintenanceDate() {
        return maintenanceDate;
    }

    public void setMaintenanceDate(Date maintenanceDate) {
        this.maintenanceDate = maintenanceDate;
    }

    public Date getNextMaintenanceDate() {
        return nextMaintenanceDate;
    }

    public void setNextMaintenanceDate(Date nextMaintenanceDate) {
        this.nextMaintenanceDate = nextMaintenanceDate;
    }

    public Date getWarrantyExpireDate() {
        return warrantyExpireDate;
    }

    public void setWarrantyExpireDate(Date warrantyExpireDate) {
        this.warrantyExpireDate = warrantyExpireDate;
    }

    public String getVendorName() {
        return vendorName;
    }

    public void setVendorName(String vendorName) {
        this.vendorName = vendorName;
    }

    public String getVendorContact() {
        return vendorContact;
    }

    public void setVendorContact(String vendorContact) {
        this.vendorContact = vendorContact;
    }

    public String getConfigParams() {
        return configParams;
    }

    public void setConfigParams(String configParams) {
        this.configParams = configParams;
    }

    @Override
    public String toString() {
        return "MonitorDevice{" +
                "deviceId=" + deviceId +
                ", deviceCode='" + deviceCode + '\'' +
                ", deviceName='" + deviceName + '\'' +
                ", deviceType=" + deviceType +
                ", deviceModel='" + deviceModel + '\'' +
                ", deviceBrand='" + deviceBrand + '\'' +
                ", schoolId=" + schoolId +
                ", locationDesc='" + locationDesc + '\'' +
                ", locationBuilding='" + locationBuilding + '\'' +
                ", locationFloor=" + locationFloor +
                ", locationRoom='" + locationRoom + '\'' +
                ", latitude=" + latitude +
                ", longitude=" + longitude +
                ", ipAddress='" + ipAddress + '\'' +
                ", port=" + port +
                ", macAddress='" + macAddress + '\'' +
                ", status=" + status +
                ", onlineStatus=" + onlineStatus +
                ", lastHeartbeat=" + lastHeartbeat +
                ", heartbeatInterval=" + heartbeatInterval +
                ", installDate=" + installDate +
                ", maintenanceDate=" + maintenanceDate +
                ", nextMaintenanceDate=" + nextMaintenanceDate +
                ", warrantyExpireDate=" + warrantyExpireDate +
                ", vendorName='" + vendorName + '\'' +
                ", vendorContact='" + vendorContact + '\'' +
                ", configParams='" + configParams + '\'' +
                '}';
    }
} 